#include <stdio.h>
#define N 3

int main() {
    int magic[N][N] = {0};
    int i = 0, j = N / 2; // 初始位置：第一行中间列
    int num = 1;
    // 构建魔方矩阵
    while (num <= N * N) {
        magic[i][j] = num;
        num++;
        // 计算下一个位置：右上方向，越界则循环
        int ni = (i - 1 + N) % N;
        int nj = (j + 1) % N;
        // 若右上位置已有元素，则下一个位置为当前位置正下方
        if (magic[ni][nj] != 0) {
            i = (i + 1) % N;
        } else {
            i = ni;
            j = nj;
        }
    }
    // 输出魔方矩阵
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            printf("%d ", magic[i][j]);
        }
        printf("\n");
    }
    return 0;
}